// Width of the view
extern int const VIEW_WIDTH;
// Width of UITabBar
extern int const TAB_BAR_WIDTH;
// Height of the view
extern int const VIEW_HEIGHT;
// Width of the view
extern int const MAP_VIEW_HEIGHT;
// Left and right margin padding for content in the view
extern int const HORIZONTAL_PADDING;
// Minimum zoom scale of content in the view
extern CGFloat const MIN_ZOOM_SCALE;
// Maximum zoom scale of content in the view
extern CGFloat const MAX_ZOOM_SCALE;
// Event table view cell height
extern int const EVENT_CELL_HEIGHT;
// Building table view cell height
extern int const BUILDING_CELL_HEIGHT;
// Point of interest table view cell height
extern int const POI_CELL_HEIGHT;
// Maximum length of event heading shown in event cell
extern int const MAX_HEADING_LENGTH;
// Maximum length of event description shown in event cell
extern int const MAX_DESCRIPTION_LENGTH;
// Name of the file containing all bookmarked event data
extern NSString* const BOOKMARKED_EVENTS_FILENAME;
// default latitude
extern double const DEFAULT_LATITUDE;
// default longitude
extern double const DEFAULT_LONGITUDE;
// default span value
extern double const DEFAULT_SPAN;
// search span
extern double const SEARCH_SPAN;
// Unique subdirectory to store the event collection archive
extern NSString* const EVENT_SUBDIRECTORY;
// Unique archive key for keyed archiving of the collection
extern NSString* const SFUEVENT_ARCHIVE_KEY;
// Maximum timeout interval for HTTP URL connections
extern double const CONN_TIMEOUT_INTERVAL;
// Number of maximum concurrent operations (threads)
extern int const MAX_CONCURRENT_OPERATION;
// Height of message prompts
extern int const MSG_PROMPT_HEIGHT;
// Height of text field input prompts
extern int const INPUT_PROMPT_HEIGHT;
// Unique subdirectory to store the business directory archive
extern NSString* const BUSDIR_SUBDIRECTORY;
// Name of the file containing all business directory data
extern NSString* const BUSDIRECTORY_FILENAME;
// Business directory table view cell height
extern int const DIR_CELL_HEIGHT;
// Unique subdirectory to store the points of interest archive
extern NSString* const POI_SUBDIRECTORY;
// Name of the file containing all points of interest data
extern NSString* const POI_FILENAME;
// Unique subdirectory to store the application settings archive
extern NSString* const SETTINGS_SUBDIRECTORY;
// Name of the file containing application settings data
extern NSString* const SETTINGS_FILENAME;
// Unique archive key for keyed archiving of the application settings
extern NSString* const SETTINGS_ARCHIVE_KEY;
// The default map type (standard)
extern NSUInteger const DEFAULT_MAP_TYPE;
// The default event caching interval
extern double const DEFAULT_EVENT_CACHE_INTERVAL;
// Unique subdirectory to store the building collection archive
extern NSString* const BUILDING_SUBDIRECTORY;
// Name of the file containing the building collection data
extern NSString* const BUILDING_FILENAME;
// Default table view cell height
extern int const DEFAULT_CELL_HEIGHT;
// Unique subdirectory to store the annotation collection archive
extern NSString* const ANNOTATION_SUBDIRECTORY;
// Name of the file containing the annotation collection data
extern NSString* const ANNOTATION_FILENAME;
// Filename of the Foursquare login image
extern NSString* const FOURSQUARE_LOGIN_IMAGE;
// Filename of the Foursquare reference image
extern NSString* const FOURSQUARE_REF_IMAGE;
// Filename of the sign in button image
extern NSString* const SIGNIN_BUTTON_IMAGE_FILENAME;
// Filename of the cancel button image
extern NSString* const CANCEL_BUTTON_IMAGE_FILENAME;
// The default limit to Foursquare venue searches
extern NSUInteger const DEFAULT_FOURSQUARE_VENUE_LIMIT;
// The default limit to Foursquare tip searches
extern NSUInteger const DEFAULT_FOURSQUARE_TIP_LIMIT;
// Filename of the Foursquare check-in image
extern NSString* const FOURSQUARE_CHECKIN_IMAGE;
// Width of the Foursquare button
extern NSUInteger const FOURSQUARE_BUTTON_WIDTH;
// Height of the Foursquare button
extern NSUInteger const FOURSQUARE_BUTTON_HEIGHT;
// Filename of the generic building icon
extern NSString* const GENERIC_BUILDING_ICON;
// Filename of the Foursquare venue does not exist image
extern NSString* const FOURSQUARE_NOVENUE_IMAGE;
// Filename of the check in button image
extern NSString* const CHECKIN_BUTTON_IMAGE_FILENAME;
// Message informing of no currently active internet connection
extern NSString* const NO_CONNECTIVITY_MSG;
// Default campus
extern NSUInteger const DEFAULT_CAMPUS;
// location of surrey campus with respect to latitude
extern double const SURREY_LATITUDE;
// location of surrey campus with respect to longitude
extern double const SURREY_LONGITUDE;
// location of vancouver campus with respect to longitude 
extern double const VANCOUVER_LATITUDE;
// location of vancouver campus with respect to longitude
extern double const VANCOUVER_LONGITUDE;
// surrey span
extern double const SURREY_SPAN;
// vancouver span 
extern double const VANCOUVER_SPAN;

// Types of annotation pins
typedef enum {
	AnnotationTypeBuilding,
	AnnotationTypePOI,
	AnnotationTypePinNote,
	AnnotationTypePinNoteTemporary,
	AnnotationTypePinNoteSilent,
	//AnnotationTypeSchedule
	AnnotationTypeFoursquareVenue,
	AnnotationTypeFoursquareTip,
	AnnotationTypeFoursquareSpecial,
	AnnotationTypeFoursquareFriend,
	AnnotationTypeTarget
} AnnotationType;

// Categories of points of interest
typedef enum {
	PointOfInterestCategoryRestaurant,
	PointOfInterestCategoryParkingLot,
	PointOfInterestCategoryBusStop,
	PointOfInterestCategoryPub,
	PointOfInterestCategoryGym,
	PointOfInterestCategorySecurity
} PointOfInterestCategory;

/**
 * SFUConstants is an object containing all the constants
 * for the application.
 *
 * @author      James Lin
 * @author      Justin Hollander
 * @since       0.1.0
 */
@interface SFUConstants : NSObject

+ (NSDictionary*)getMapTypes;
+ (NSDictionary*)getCampuses;
+ (NSDictionary*)getCacheIntervals;
+ (NSDictionary*)getVenueLimits;
+ (NSDictionary*)getTipLimits;
+ (NSArray*)getSearchOptions;
+ (NSDictionary*)getCalendarURLs;
+ (NSString*)POICategoryString:(PointOfInterestCategory)category;
+ (UIImage*)POICategoryImage:(NSString*)category;

@end
